package hr.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import hr.entity.EmployeeDepartForm;
import hr.entity.EmployeeOnboardingLink;
import hr.entity.Employee;
import com.baomidou.mybatisplus.extension.service.IService;
import hr.entity.vo.*;
import hr.entity.vo.request.DepartureInfoVO;
import hr.entity.vo.response.EntryStatusVo;

import java.io.IOException;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 员工信息表 服务类
 * </p>
 *
 * @author zzh
 * @since 2023-12-04
 */
public interface EmployeesService extends IService<Employee> {

    List<Employee> searchByEmployeeName(String employeeName);

    Map<String, String> fillInOnboardingRegistrationInformation(Long loginId) throws Exception;

    Employee login(LoginVo paramMap) throws Exception;

    List<EntryStatusVo> findStateFillLink(Paging page);

    List<?> selectAllDepartments(ObtainDepartment obtainDepartment);

    int brokenLink(EmployeeOnboardingLink vo) throws Exception;

    boolean collectOnboardingReportsAndReports(FormInline form) throws Exception;

    FormInline viewOnboardingForm(String urlId) throws Exception;

    boolean handleFormSubmission(String formId, String handleMethod) throws Exception;

    FormInline viewEmployeeDetails(String empId) throws Exception;

    boolean updateEmployeeDetails(FormInline form);

    Integer getCount(PositionEmployeesVo positionEmployeesVO);

    String resignationApplication() throws IOException;

    boolean submitResignationApplicationForm(DepartureInfoVO vo);

    IPage<?> getResignationApplicationForm(ObtainDepartment paging);

    boolean agreeDepart(EmployeeDepartForm vo);

    Map<String, Object> getEmployeeRatio();

    Map<String, Object> HandleSevenDayInAndLeave();
}
